Подключение метода /api/v1/auth/login на API-Шлюзе
Валидация входящего DTO, вызов gRPC Auth и трансляция токенов клиенту.
NoteКраткая карточка задачи
- Репозиторий / Компонент:
backend-api(API Gateway / Шлюз). - Категория: Подключение метода к шлюзу.
- Контракт взаимодействия: Внешний
POST /api/v1/auth/login-> Внутренний gRPCAuthService.LoginUser. - Статус: Готово к реализации
Инструкция по шагам:
- На Шаге 1-2 (Входной REST-эндпоинт): Зарегистрировать публичный HTTP-маршрут
POST /api/v1/auth/login. Добавить Pydantic/DTO валидацию тела запроса (UserAuthRequestDTO). Настроить базовую валидацию регулярным выражением для поляemail. При ошибках валидации отдаватьHTTP 400 Bad Request. - На Шаге 3 (Вызов gRPC-клиента): Сформировать сообщение
LoginRequest, передав туда строкиemailиpassword. Вызвать внутренний gRPC-методLoginUserв компонентеauth-service. Обеспечить сквозное логирование поставляемого в заголовкахX-Request-ID. - Обработка бизнес-статусов: Реализовать перехват ответов от gRPC-сервера. Если бэкенд возвращает
NOT_FOUNDилиUNAUTHENTICATED, транслировать это на внешний клиент единой замаскированной ошибкой безопасности, чтобы исключить брутфорс логинов (например, отдаватьHTTP 401 Unauthorizedс общим текстом “Invalid credentials”). При ошибкеINVALID_ARGUMENTвозвращатьHTTP 400 Bad Request. - Финальный ответ (Шаг 9): При получении успешного
LoginResponse(с токенами внутри), сформировать JSON-ответ со статусом200 OK, содержащийaccessиrefreshключи, для отправки в мобильное приложение.
- На Шаге 1-2 (Входной REST-эндпоинт): Зарегистрировать публичный HTTP-маршрут